/**
 * 
 */
package serialisierung;

import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;

import model.ProductList;
import fpt.com.Product;
import fpt.com.SerializableStrategy;


public class Serialisierung {

	private SerializableStrategy strategy;

	public void setStrat(SerializableStrategy strategy) {
		this.strategy = strategy;
	}


	public void writeProductList(ArrayList<Product> list) {
		try {
			for (Product p : list) {
				strategy.writeObject(p);
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("Schreiben fehlgeschlagen");
		} finally {
			try {
				strategy.close();
			} catch (IOException e) {
				e.printStackTrace();
				System.out.println("Schließen fehlgeschlagen.");
			}
		}
	}

	public ProductList readProductList() {

		ProductList list = new ProductList();

		try {
			Product p = null;
			while ((p = strategy.readObject()) != null) {
				list.add(p);
			}
		} catch (EOFException e) {

		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("Datei nicht vorhanden.");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("Lesen fehlgeschlagen");
		} catch (ArrayIndexOutOfBoundsException e) {
			// Exception tritt jeweils nach dem Auslesen des letzten Produkts (strategy.readObject()) auf
			// muss nicht bearbeitet werden -> Sprung zu finally-Block
		} finally {
			try {
				strategy.close();
			} catch (IOException e) {
				e.printStackTrace();
				System.out.println("Schließen fehlgeschlagen");
			}
		}
		return list;

	}

}
